/**@class java.security.Principal
 This interface represents the abstract notion of a principal, which
 can be used to represent any entity, such as an individual, a
 corporation, and a login id.

 @see java.security.cert.X509Certificate

 @author Li Gong
*/
var Principal = {

/**Compares this principal to the specified object.  Returns true
 if the object passed in matches the principal represented by
 the implementation of this interface.
@param {Object {Object}} another principal to compare with.
@return {Boolean} true if the principal passed in is the same as that
 encapsulated by this principal, and false otherwise.
*/
equals : function(  ) {},

/**Returns a string representation of this principal.
@return {String} a string representation of this principal.
*/
toString : function(  ) {},

/**Returns a hashcode for this principal.
@return {Number} a hashcode for this principal.
*/
hashCode : function(  ) {},

/**Returns the name of this principal.
@return {String} the name of this principal.
*/
getName : function(  ) {},

/**Returns true if the specified subject is implied by this principal.

 <p>The default implementation of this method returns true if
 {@code subject} is non-null and contains at least one principal that
 is equal to this principal.

 <p>Subclasses may override this with a different implementation, if
 necessary.
@param {Object {Subject}} subject the {@code Subject}
@return {Boolean} true if {@code subject} is non-null and is
              implied by this principal, or false otherwise.
@since 1.8
*/
implies : function(  ) {},


};