package org.scribble.ast.local; import java.util.Set; import org.scribble.ast.InteractionNode; import org.scribble.main.ScribbleException; import org.scribble.sesstype.Message; import org.scribble.sesstype.kind.Local; import org.scribble.sesstype.name.Role; import org.scribble.visit.context.ProjectedChoiceSubjectFixer; // Alternatively to interface, use GlobalNode subclass with delegation to "super" base (e.g. Choice) classes public interface LInteractionNode extends InteractionNode<Local>, LNode { Role inferLocalChoiceSubject(ProjectedChoiceSubjectFixer fixer); LInteractionNode merge(LInteractionNode ln) throws ScribbleException; // Merge currently does "nothing"; validation takes direct non-deterministic interpretation -- purpose of syntactic merge would be to convert non-det to "equivalent" safe det in certain sitations boolean canMerge(LInteractionNode ln); Set<Message> getEnabling(); }