class Model {

    public List<Property> getProperties() {
        return Collections.unmodifiableList(Arrays.asList(properties));
    }

      Model(ModelBuilder parent, Class<T> type, @CheckForNull Class<?> propertyOwner, @Nullable String property);

}