class SpdxExpression {
    public static final SpdxExpression INVALID = new SpdxExpression(null);
    public SpdxExpression(String spdxLicenseId) {
        this.spdxLicenseId = spdxLicenseId;
    }

    public SpdxExpression(SpdxOperator operator, List<SpdxExpression> arguments) {
        this.operation = new SpdxExpressionOperation(operator, arguments);
    }

    private SpdxExpressionOperation operation;
    private String spdxLicenseId;

    public SpdxExpressionOperation getOperation() {
        return operation;
    }

    public void setOperation(SpdxExpressionOperation operation) {
        this.operation = operation;
    }

    public String getSpdxLicenseId() {
        return spdxLicenseId;
    }

    public void setSpdxLicenseId(String spdxLicenseId) {
        this.spdxLicenseId = spdxLicenseId;
    }

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

        if (this == INVALID) {
            return "INVALID";
        }
        if (spdxLicenseId != null) {
            return spdxLicenseId;
        }
        return operation.toString();
    
<no_super_class>