Buggy code:
public final class JavaBeansType implements BackendType { private final Class < ? > _javaClass ; private final List < NamedFunction > _operations = new ArrayList < NamedFunction > ( ) ; private final Map < String , JavaBeansProperty > _properties = new HashMap < String , JavaBeansProperty > ( ) ; private final Map < String , StaticProperty > _staticProperties = new HashMap < String , StaticProperty > ( ) ; private Collection < BackendType > _superTypes ; public JavaBeansType ( Class < ? > cls ) { } void init ( BackendTypesystem ts ) throws IntrospectionException { _superTypes = Collections . singleton ( ts . getRootTypesystem ( ) . findType ( _javaClass . getSuperclass ( ) ) ) ; for ( Method mtd : _javaClass . getMethods ( ) ) { if ( ( mtd . getDeclaringClass ( ) ) == ( Object . class ) ) continue ; final List < BackendType > paramTypes = new ArrayList < BackendType > ( ) ; paramTypes . add ( this ) ; for ( Class < ? > cls : mtd . getParameterTypes ( ) ) { paramTypes . add ( ts . getRootTypesystem ( ) . findType ( cls ) ) ; } _operations . add ( new NamedFunction ( mtd . getName ( ) , new JavaOperation ( mtd , paramTypes , null ) ) ) ; } for ( PropertyDescriptor pd : Introspector . getBeanInfo ( _javaClass ) . getPropertyDescriptors ( ) ) { if ( ( pd . getReadMethod ( ) . getDeclaringClass ( ) ) == ( Object . class ) ) continue ; <START_BUG> _properties . put ( pd . getName ( ) , new JavaBeansProperty ( pd , this , ts . getRootTypesystem ( ) . findType ( pd . getPropertyType ( ) ) , JavaBuiltinConverterFactory . getConverter ( pd . getPropertyType ( ) ) ) ) ; <END_BUG> } for ( Field field : _javaClass . getFields ( ) ) { final int mod = field . getModifiers ( ) ; if ( ( ( Modifier . isPublic ( mod ) ) && ( Modifier . isStatic ( mod ) ) ) && ( Modifier . isFinal ( mod ) ) ) { try { _staticProperties . put ( field . getName ( ) , new JavaBeansStaticProperty ( field , this , ts . getRootTypesystem ( ) . findType ( field . getType ( ) ) , JavaBuiltinConverterFactory . getConverter ( field . getType ( ) ) ) ) ; } catch ( Exception e ) { ErrorHandler . handle ( e ) ; } } } final Object [ ] enumValues = _javaClass . getEnumConstants ( ) ; if ( enumValues != null ) { for ( Object o : enumValues ) { final Enum < ? > curEnum = ( ( Enum < ? > ) ( o ) ) ; _staticProperties . put ( curEnum . name ( ) , new JavaBeansStaticProperty ( this , ts . getRootTypesystem ( ) . findType ( curEnum ) , curEnum . name ( ) , curEnum ) ) ; } } } public Object create ( ) { } public List < NamedFunction > getBuiltinOperations ( ) { } public Object getProperty ( ExecutionContext ctx , Object o , String name ) { } private Property findProperty ( String name ) { } public void setProperty ( ExecutionContext ctx , Object o , String name , Object value ) { } public boolean isAssignableFrom ( BackendType other ) { } public String getName ( ) { } public Map < String , ? extends Property > getProperties ( ) { } public Map < String , ? extends StaticProperty > getStaticProperties ( ) { } public Collection < BackendType > getSuperTypes ( ) { } @ Override public String toString ( ) { } }

Fix:
_properties . put ( pd . getName ( ) , new JavaBeansProperty ( pd , this , ts . getRootTypesystem ( ) . findType ( pd . getPropertyType ( ) ) ) ) ;