class AbstractChildDocument<PARENT extends Document> 
extends BaseDocument implements HasParent<PARENT> {

    AbstractChildDocument(PARENT parent, Map<String, Object> data) {
        super(parent, data);
    }
    
    @Override
    public Optional<PARENT> getParent() {<FILL_FUNCTION_BODY>}
    
    @Override
    public String toString() {
        return toStringHelper(this);
    }
}

        @SuppressWarnings("unchecked")
        final Optional<PARENT> parent = (Optional<PARENT>) super.getParent();
        return parent;
    
<methods>public void <init>(com.speedment.runtime.config.Document, Map<java.lang.String,java.lang.Object>) ,public Stream<com.speedment.runtime.config.Document> children() ,public Optional<java.lang.Object> get(java.lang.String) ,public com.speedment.common.function.OptionalBoolean getAsBoolean(java.lang.String) ,public java.util.OptionalDouble getAsDouble(java.lang.String) ,public java.util.OptionalInt getAsInt(java.lang.String) ,public java.util.OptionalLong getAsLong(java.lang.String) ,public Optional<java.lang.String> getAsString(java.lang.String) ,public Map<java.lang.String,java.lang.Object> getData() ,public Optional<? extends com.speedment.runtime.config.Document> getParent() ,public void put(java.lang.String, java.lang.Object) <variables>private final non-sealed Map<java.lang.String,java.lang.Object> config,private final non-sealed com.speedment.runtime.config.Document parent