private Set<AliveVar> getReadVars(BasicBlock block) 
    {
        Set<AliveVar> readVars = new HashSet<>();
        for ( ASTNode child : block.getASTNodes() ) 
        {
            if ( child instanceof VariableReferenceNode ) 
            {
                final VariableReferenceNode ref = (VariableReferenceNode ) child;
                // check if we're on the LHS of an assignment
                ASTNode previous=ref;
                ASTNode current = ref.getParent();
                while( current != null && ! isAssignmentOperator( current ) ) 
                {
                    previous = current;
                    current = current.getParent();
                }
                final boolean onLHS = current != null && isAssignmentOperator( current ) && current.indexOf( previous ) == 0;
                if ( ! onLHS ) {
                    readVars.add( new AliveVar(ref.getDefinitionSite() ) );
                }
            }
        }
        return readVars;
    }