5.5 Prototype Scoping Rules
Prototype names must be unique: defining a prototype with the same name as another prototype or a built-in node type is an error. A .proto file can contain only one prototype definition. A prototype can be defined in terms of other prototypes. However, instantiation of a prototype inside its own definition is not permitted (i.e., recursive prototypes are illegal). An IS statement refers to a field in the interface of the same prototype, in the same file.
A .proto file establishes a DEF/USE name scope separate from the rest of the scene tree and separate from any other prototype definition. Nodes given a name by a DEF construct inside the prototype may not be referenced in a USE construct outside of the prototype's scope. Nodes given a name by a DEF construct outside the prototype scope may not be referenced in a USE construct inside the prototype scope.