package org.x2a.cutter.cut;

/**
 * Marker interface... or not
 */
public abstract class PointCut<RETURN_TYPE> {

    protected final JoinPoint joinPoint;

    public PointCut(final JoinPoint joinPoint) {
        this.joinPoint = joinPoint;
    }

    public abstract Action before(Object[] args);

    public abstract RETURN_TYPE after(Object[] args);
}

@@ -157,146 +157,1155 @@
     
-public PointCut(final JoinPoint joinPoint) %7B%0A        this.joinPoint = joinPoint;%0A    %7D%0A%0A    public abstract Action before(Object%5B%5D args);%0A
+/**%0A     * Creates a PointCut instance%0A     * @param joinPoint the join point where this point cut was created%0A     */%0A    public PointCut(final JoinPoint joinPoint) %7B%0A        this.joinPoint = joinPoint;%0A    %7D%0A%0A    /**%0A     * Executed before the method the point cut is targeting is invoked (and before the stack frame is allocated)%0A     * @param args the arguments passed to the method this PointCut is wrapping%0A     * @return An Action - either INVOKE or SKIP. If INVOKE, the method will be invoked. If skip, the method call will be skipped.%0A     * Skipping a method will cause the %7B@link PointCut#after(Object%5B%5D)%7D method to not be called.%0A     */%0A    public abstract Action before(Object%5B%5D args);%0A%0A    /**%0A     * Executed after the method the PointCut targets is called (and after the stack frame is cleared)%0A     * @param args the arguments passed to the method (including any modifications made by %7B@link PointCut#before(Object%5B%5D)%7D%0A     * @return The value to be returned by the method call. Use %7B@link Void%7D for void methods. The return of this method will%0A     * undergo a static cast to the return type of the method being wrapped.%0A     */
 %0A   

add rough java-doc