X3DBindableNode : X3DChildNode {
  SFBool [in]     set_bind
  SFNode [in,out] metadata NULL [X3DMetadataObject]
  SFTime [out]    bindTime
  SFBool [out]    isBound
}

X3DChildNode : X3DNode {
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DInfoNode : X3DChildNode {
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DMetadataObject {
  SFString [in,out] name      ""
  SFString [in,out] reference ""
}

X3DNode {
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DPrototypeInstance : X3DNode {
  SFNode [in,out] metdata NULL [X3DMetadataObject]
}

X3DSensorNode  : X3DChildNode {
  SFBool [in,out] enabled  TRUE
  SFNode [in,out] metadata NULL [X3DMetadataObject]
  SFBool [out]    isActive
}

MetadataDouble : X3DNode, X3DMetadataObject {
  SFNode   [in,out] metadata  NULL [X3DMetadataObject]
  SFString [in,out] name      ""
  SFString [in,out] reference ""
  MFDouble [in,out] value     []
}

MetadataFloat : X3DNode, X3DMetadataObject {
  SFNode   [in,out] metadata  NULL [X3DMetadataObject]
  SFString [in,out] name      ""
  SFString [in,out] reference ""
  MFFloat  [in,out] value     []
}

MetadataInteger : X3DNode, X3DMetadataObject {
  SFNode   [in,out] metadata  NULL [X3DMetadataObject]
  SFString [in,out] name      ""
  SFString [in,out] reference ""
  MFInt32  [in,out] value     []
}

MetadataSet : X3DNode, X3DMetadataObject {
  SFNode   [in,out] metadata  NULL [X3DMetadataObject]
  SFString [in,out] name      ""
  SFString [in,out] reference ""
  MFNode   [in,out] value     [] [X3DMetadataObject]
}

MetadataString : X3DNode, X3DMetadataObject {
  SFNode   [in,out] metadata  NULL [X3DMetadataObject]
  SFString [in,out] name      ""
  SFString [in,out] reference ""
  MFString [in,out] value     []
}

WorldInfo : X3DInfoNode {
  SFNode   [in,out] metadata NULL [X3DMetadataObject]
  MFString []       info     []
  SFString []       title    ""
}
