package rocks.inspectit.shared.all.instrumentation.classcache;
import java.util.Set;
/**
* A type that can have methods.
*
* @author Stefan Siegl
*/
public interface TypeWithMethods extends ImmutableTypeWithMethods {
/**
* Adds a method that this type contains and ensures that the back-reference on the referred
* entity is set as well.
*
* @param type
* the method that is defined in this type.
*/
void addMethod(MethodType type);
/**
* Adds a method that this type contains WITHOUT setting the back-reference. Please be aware
* that this method should only be called internally as this might mess up the bi-directional
* structure.
*
* @param type
* the method that is defined in this type.
*/
void addMethodNoBidirectionalUpdate(MethodType type);
/**
* Gets {@link #methods} as an unmodifiableSet. If you want to add something to the list, use
* the provided adders, as they ensure that the bi-directional links are created.
*
* @return {@link #methods}
*/
Set<MethodType> getMethods();
}