go:-    
    cgWindow(Win,"Arrows"), Win^topMargin #= 30, Win^leftMargin #= 10,
    handleWindowClosing(Win),
    cgSquare([R1,R2,R3,R4,R5,R6]), %layout areas
    R1^width #>100,
    cgGrid([[R1,R2],
	    [R3,R4],
	    [R5,R6]]),
    cgSame([R1,R2,R3,R4,R5,R6],window,Win),
    cgPack([R1,R2,R3,R4,R5,R6]), % determine layout areas first
    
    cgLine(L1),
    L1^point1 #= R1^rightBottomPoint,
    L1^point2 #= R1^leftTopPoint,
    L1^arrow1 #= 1,
    
    %
    cgLine(L2),
    L2^point1 #= R2^leftBottomPoint,
    L2^point2 #= R2^rightTopPoint,
    L2^arrow1 #= 1, L2^arrow2 #= 1,
    %
    cgLine(L3),
    L3^point1 #= R3^rightTopPoint,
    L3^point2 #= R3^leftBottomPoint,
    L3^thickness #= 10, L3^arrow1 #= 1, L3^arrowLength1 #= 20, L3^arrowThickness1 #= 20,
    %
    cgLine(L4),
    L4^point1 #= R4^leftTopPoint,
    L4^point2 #= R4^rightBottomPoint,
    L4^thickness #= 10, 
    L4^arrow1 #= 1, L4^arrowThickness1 #= 15,
    L4^arrow2 #= 1, L4^arrowThickness2 #= 20,
    %
    cgLine(L5),
    L5^point1 #= R5^topCenterPoint,
    L5^point2 #= R5^bottomCenterPoint,
    L5^arrow2 #= 1,
    %
    cgLine(L6),
    L6^point1 #= R6^leftCenterPoint,
    L6^point2 #= R6^rightCenterPoint,
    L6^arrow2 #= 1,
    %
    cgSame([L1,L2,L3,L4,L5,L6],window,Win),
    cgShow([L1,L2,L3,L4,L5,L6]).

handleWindowClosing(Win),{windowClosing(Win)} => cgClose(Win).
