/** * Overridden to tells if the specified {@link ISequenceEvent} is owned by the current {@link * Lifeline}. * * <p>{@inheritDoc} */ public boolean apply(ISequenceEvent input) { boolean result = false; Option<Lifeline> inputLifeline = input.getLifeline(); if (inputLifeline.some()) { result = inputLifeline.get().equals(owner); } else if (input instanceof Message) { Message message = (Message) input; ISequenceNode sourceElt = message.getSourceElement(); ISequenceNode targetElt = message.getSourceElement(); Option<Lifeline> sourceLifeline = sourceElt.getLifeline(); Option<Lifeline> targetLifeline = targetElt.getLifeline(); result = sourceLifeline.some() && sourceLifeline.get().equals(owner) || targetLifeline.some() && targetLifeline.get().equals(owner); } else if (input instanceof Operand) { result = true; } else if (input instanceof AbstractFrame) { AbstractFrame frame = (AbstractFrame) input; Collection<Lifeline> coverage = frame.computeCoveredLifelines(); result = coverage.contains(owner); } return result; }