fields[i].getType().equals("J") &&
fields[i].getType() == PrimitiveType.LONG &&
    public long getSerialVersionUID()    {	for(int i = 0; i < fields.length; i++)	{	    if(fields[i].getName().equals("serialVersionUID") &&		fields[i].getType().equals("J") &&		Modifier.isStatic(fields[i].getModifiers()) &&		Modifier.isFinal(fields[i].getModifiers()))	    {                Long val = (Long)fields[i].getPrimitiveValue();                if (val == null)                {                    // It's a blank final, we don't support that.                    // (We'd have to run the <clinit> to get the value.)                    System.err.println();                    System.err.println("Warning: " + name + " has a blank final serialVersionUID");                    return 0;                }		return val.longValue();	    }	}	// The class didn't define serialVersionUID, so we have to compute it	try 	{	    final MessageDigest md = MessageDigest.getInstance("SHA");	    OutputStream digest = new OutputStream() 	    {		public void write(int b) 		{		    md.update((byte) b);		}		public void write(byte[] data, int offset, int length) 		{		    md.update(data, offset, length);		}	    };	    DataOutputStream data_out = new DataOutputStream(digest);	    data_out.writeUTF(getName());	    int modifiers = raw_access_flags;	    // just look at interesting bits	    modifiers = modifiers & (Modifier.ABSTRACT  | Modifier.FINAL |		Modifier.INTERFACE | Modifier.PUBLIC);	    data_out.writeInt(modifiers);            String[] interfaces = (String[])this.interfaces.clone();	    Arrays.sort(interfaces);	    for (int i = 0; i < interfaces.length; i++)	    {		data_out.writeUTF(interfaces[i]);	    }	    Arrays.sort(fields, new Comparator() 	    {		public int compare(Object o1, Object o2) 		{		    return compare((FieldWrapper)o1, (FieldWrapper)o2);		}		public int compare(FieldWrapper f1, FieldWrapper f2) 		{		    if (f1.getName().equals(f2.getName())) 		    {			return f1.getType().getNonGenericTypeSig().compareTo(f2.getType().getNonGenericTypeSig());		    } 		    else 		    {			return f1.getName().compareTo(f2.getName());		    }		}	    });	    for (int i = 0; i < fields.length; i++) 	    {		FieldInfoItem field = fields[i];		modifiers = field.getModifiers();		if (Modifier.isPrivate (modifiers) &&		    (Modifier.isStatic(modifiers) ||		    Modifier.isTransient(modifiers))) 		{		    continue;		}		data_out.writeUTF(field.getName());		data_out.writeInt(modifiers);		data_out.writeUTF(field.getType().getNonGenericTypeSig());	    }	    Arrays.sort(methods, new Comparator() 	    {		public int compare(Object o1, Object o2) 		{		    return compare((MethodInfoItem)o1, (MethodInfoItem)o2);		}		public int compare(MethodInfoItem m1, MethodInfoItem m2) 		{		    if (m1.getRawName().equals(m2.getRawName())) 		    {			return m1.getDescriptor().compareTo(m2.getDescriptor());		    } 		    else 		    {			return m1.getRawName().compareTo(m2.getRawName());		    }		}	    });	    for (int i = 0; i < methods.length; i++) 	    {		MethodInfoItem method = methods[i];		modifiers = method.getModifiers();		if (Modifier.isPrivate(modifiers)) 		{		    continue;		}		data_out.writeUTF(method.getRawName());		data_out.writeInt(modifiers);		// the replacement of '/' with '.' was needed to make computed		// SUID's agree with those computed by JDK		data_out.writeUTF(method.getDescriptor().replace('/', '.'));	    }	    data_out.close ();	    byte[] sha = md.digest ();	    long result = 0;	    int len = sha.length < 8 ? sha.length : 8;	    for (int i=0; i < len; i++)		result += (long)(sha[i] & 0xFF) << (8 * i);  	    return result;	}	catch (NoSuchAlgorithmException e) 	{	    throw new RuntimeException("The SHA algorithm was not found to use in " +		"computing the Serial Version UID for class " +		getName());	} 	catch (IOException ioe) 	{	    throw new RuntimeException(ioe.getMessage());	}    }