/*
   Copyright 2018 Volker Berlin (i-net software)

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

*/
package de.inetsoftware.jwebassembly.module;

import javax.annotation.Nonnull;

import de.inetsoftware.classparser.Member;

/**
 * Described the name of WebAssembly function.
 * 
 * @author Volker Berlin
 *
 */
public class FunctionName {

    /**
     * The name in the WebAssembly.
     */
    public final String fullName;

    /**
     * The Java signature which is used in Java byte code to reference the method call.
     */
    public final String signatureName;

    /**
     * Create a new instance from the given reference in the ConstantPool or parsed method.
     * 
     * @param methodOrField
     *            the Java method
     */
    FunctionName( @Nonnull Member methodOrField ) {
        String methodName = methodOrField.getName();
        String className = methodOrField.getClassName();
        fullName = className + '.' + methodName;
        signatureName = fullName + methodOrField.getType();
    }
}

@@ -885,32 +885,45 @@
 sembly.%0A     */%0A
+    @Nonnull%0A
     public final
@@ -936,24 +936,24 @@
 g fullName;%0A
-
 %0A    /**%0A   
@@ -1041,24 +1041,37 @@
 ll.%0A     */%0A
+    @Nonnull%0A
     public f
@@ -1487,16 +1487,16 @@
 odName;%0A
-
         
@@ -1552,11 +1552,554 @@
 );%0A    %7D
+%0A%0A    /**%0A     * %7B@inheritDoc%7D%0A     */%0A    @Override%0A    public int hashCode() %7B%0A        return signatureName.hashCode();%0A    %7D%0A%0A    /**%0A     * %7B@inheritDoc%7D%0A     */%0A    @Override%0A    public boolean equals( Object obj ) %7B%0A        if( this == obj ) %7B%0A            return true;%0A        %7D%0A        if( obj == null ) %7B%0A            return false;%0A        %7D%0A        if( getClass() != obj.getClass() ) %7B%0A            return false;%0A        %7D%0A        FunctionName other = (FunctionName)obj;%0A        return signatureName.equals( other.signatureName );%0A    %7D
 %0A%7D%0A

Add eqauls and hashCode to FunctionName