class ExtensionImpl implements ExtensionInternal, Serializable {

    @Serial
    private static final long    serialVersionUID = 14648778982899384L;

    protected ComponentName      name;

    protected ComponentName      target;

    protected String             extensionPoint;

    protected String             documentation;

    protected ClassLoader        appClassLoader;

    protected transient Element  element;

    protected transient Object[] contributions;

    public ExtensionImpl(ComponentName name, String extensionPoint) {
        this(name, extensionPoint, null, null);
    }

    public ExtensionImpl(ComponentName name, String extensionPoint, Element element,
                         ClassLoader appClassLoader) {
        this.name = name;
        this.extensionPoint = extensionPoint;
        this.element = element;
        this.appClassLoader = appClassLoader;
    }

    @Override
    public void dispose() {
        element = null;
        contributions = null;
    }

    @Override
    public Element getElement() {
        return element;
    }

    @Override
    public void setElement(Element element) {
        this.element = element;
    }

    @Override
    public String getExtensionPoint() {
        return extensionPoint;
    }

    @Override
    public ComponentName getComponentName() {
        return this.name;
    }

    @Override
    public ComponentName getTargetComponentName() {
        return this.target;
    }

    @Override
    public void setTargetComponentName(ComponentName target) {
        this.target = target;
    }

    @Override
    public Object[] getContributions() {
        return contributions;
    }

    @Override
    public ClassLoader getAppClassLoader() {
        return appClassLoader;
    }

    @Override
    public void setContributions(Object[] contributions) {
        this.contributions = contributions;
    }

    public String getDocumentation() {
        return documentation;
    }

    @Override
    public String getId() {
        return null;
    }

    @Override
    public String toString() {<FILL_FUNCTION_BODY>}
}

        final StringBuilder buf = new StringBuilder();
        buf.append(ExtensionImpl.class.getSimpleName());
        buf.append(" {");
        buf.append("target: ");
        buf.append(name);
        buf.append(", point:");
        buf.append(extensionPoint);
        buf.append('}');
        return buf.toString();
    
<no_super_class>